package org.jaaksi.kottlindemo.`object`

interface Base {
  fun print()
}

class BaseImpl(val x: Int) : Base {
  override fun print() {
    print(x)
  }
}

// Derived 的超类型列表中的 by-子句表示 b 将会在 Derived 中内部存储，
// 并且编译器将生成转发给 b 的所有 Base 的方法
class Derived(b: Base) : Base by b

fun main() {
  val b = BaseImpl(10)
  Derived(b).print()
}